import axios from 'axios';
import { baseURL } from './env_config';

class gAxios {
  constructor() {
    const Axios = axios.create({ // 配置请求对象
      baseURL,
      timeout: 5000, // 超过 5 秒视为掉线
      responseType: 'json',
      withCredentials: false,
      headers: { 'Content-Type': 'application/json;charset=utf-8' }
    });
    Axios.interceptors.request.use(this.reqSuccess.bind(this), this.reqFault.bind(this)); // 配置请求拦截器
    Axios.interceptors.response.use(this.resSuccess.bind(this), this.resFault.bind(this)); // 配置响应拦截器
    Axios.bindUrl = this.bindUrl.bind(this);
    return Axios;
  }

  // 手动绑定 URL
  bindUrl(baseURL) {
    const Axios = axios.create({ // 配置请求对象
      baseURL,
      timeout: 5000, // 超过 5 秒视为掉线
      responseType: 'json',
      withCredentials: false,
      headers: { 'Content-Type': 'application/json;charset=utf-8' }
    });
    Axios.interceptors.request.use(this.reqSuccess.bind(this), this.reqFault.bind(this)); // 配置请求拦截器
    Axios.interceptors.response.use(this.resSuccess.bind(this), this.resFault.bind(this)); // 配置响应拦截器
    return Axios;
  }

  reqSuccess(config) {
    // console.log(config, '发送成功');
    return config;
  }

  reqFault(error) {
    console.log(error, '发送失败');
    return error;
  }

  resSuccess(res) {
    // console.log(res, '成功获取数据');
    return res.status === 200 ? res.data : res;
  }

  resFault(error) {
    console.log(error, '获取失败');
    return error;
  }
}

export default new gAxios();
